package org.balthie.cal.core;

import java.util.Deque;

import org.balthie.cal.common.ex.InputException;

/**
 * @author：balthie@126.com
 * @createtime ： 2023年3月7日 下午1:37:55
 * @description 计算式中的参数、数学运算符、 回退、清屏等原子概念的抽象
 * @since version 初始于版本 0.0.1-SNAPSHOT
 */
public interface ICommand extends ICalKind {

	void execute(Deque<ICommand> workArea, Deque<ICommand> undoArea);

	// 是否是完整计算式	
	boolean isCompleted(Deque<ICommand> workArea);
	
	// 打印指令时显示的字面量	
	String getLiterally();
	
	// 指令说明
	String getTips();
	
	// 当前指令是否合法
	void isLegal(Deque<ICommand> workArea, Deque<ICommand> undoArea) throws InputException;

}
